<?php
namespace Admin\Controller;

class ClassController extends AdminController {
	/**
	 * 班级信息
	 * 
	 * 		获取页面参数,获取session中学校数据，查询该学校的班级信息。
	 */
    public function index(){
        $className			=   I('class_name');
        $map['ci.schoolid']	=	session('user_auth.schoolid');
        $map['ci.status']  	=	array('neq','-1');//班级状态（-1：已删除，0：禁用，1：正常）
        $map['ci.undergraduate']	=   1;//是否毕业（1，表示未毕业，0表示已毕业）
        $map['ci.class_sno|ci.class_name']=   array('like', '%'.(string)$className.'%');
        $classTeacherModel=M('ClassInfo ci')->join('primary_teacher t ON t.uid = ci.teacherid','LEFT');//班级表左连接了教师表的模型
        $classList   = $this->lists(
	        		$classTeacherModel, 										//多表模型
	        		$map,														//查询条件
	        		'ci.teacherid,ci.id desc',									//排序方式
	        		'ci.id,ci.class_name,ci.studentcount,ci.class_sno,t.teachername,t.teacher_tel'	//查询字段
             );        
        $this->assign('_list', $classList);
        Cookie('__forward__',$_SERVER['REQUEST_URI']);
        $this->display();
    }

	/**
	 * 新建班级
	 * 
	 * 		获取页面参数,获取session中学校数据，处理用户名，新建班级。
	 *      
     * 		查询该学校教师列表，显示页面。
	 */
	public function add(){	
		if(IS_POST){
			$teacherModel	=	D('Teacher');
			$classModel		=	D('ClassInfo');
			$class			=	$classModel->create();
			if (!$class) {
				$this->error($classModel->getError());
			}else {
				$class['class_sno']	=	session('user_auth.school_short_name').$class['class_sno'];
				$map['status']		=   array('neq','-1');//班级状态（-1：已删除，0：禁用，1：正常）
				$map['class_sno']	=	$class['class_sno'];
// 				$isexist = $classModel->where($map)->find();
// 				if(!$isexist){//新建时不存在该班级号
// 					$classModel->startTrans();
					$class['schoolid']	=	session('user_auth.schoolid');
					$class['schoolname']=	session('user_auth.schoolname');
					$class['status']  	=	1;//班级状态（-1：已删除，0：禁用，1：正常）
					$class['undergraduate']	=   1;//是否毕业（1，表示未毕业，0表示已毕业）
// 					if($class['teacherid']){
// 						$teacher['uid']	=	$class['teacherid'];
// 						$teacher['isdistribution']=	1;
// 						if($teacherModel->save($teacher)===false){
// 							$classModel->rollback();
// 							$this->error('班级添加失败！');
// 						}
// 					}
					if(!$classModel->add($class)){
// 						$classModel->rollback();
						$this->error('班级添加失败！');
					} else {
// 						$classModel->commit();
						$this->success('班级添加成功！',Cookie('__forward__'));
					}
// 				}else{//新建时存在该班级号
// 					$this->error('班级号已存在！');
// 				}
			}
		}else{
			/*查询下拉框教师信息*/
			$map['schoolid']=	session('user_auth.schoolid');
			$map['status']	=	1;//教师状态（-1：已删除，0：禁用，1：正常）
// 			$map['isdistribution']=0;//是否已分配（是否被分配成班主任，0表示没有被分配，1表示已经被分配，默认为0）				

			$teacherList	=	M('Teacher')->where($map)->select();
			$this->assign('_list', $teacherList);
			$this->display();
		}
	}
	/**
	 * 编辑班级
	 * 
	 * 		查询该班级信息，该学校教师列表，显示页面。
	 */
	public function editClass(){
		if(IS_POST){
			$teacherModel	=	D('Teacher');
			$classModel		=	D('ClassInfo');
			$class			=	$classModel->create();
			if (!$class) {
				$this->error($classModel->getError());
			}else {
// 				$classModel->startTrans();
				$class['class_sno']	=	session('user_auth.school_short_name').$class['class_sno'];
				$map['status']		=   array('neq','-1');//班级状态（-1：已删除，0：禁用，1：正常）
				$map['class_sno']	=	$class['class_sno'];
				$isexist = $classModel->where($map)->find();
				if(!$isexist||$isexist['id']==$class['id']){//修改时不存在该班级号 或 存在该班级号但是是本班
					$classMap['status']	=   array('neq','-1');//班级状态（-1：已删除，0：禁用，1：正常）
					$classMap['id']		=	$class['id'];
// 					$preClass = $classModel->where($classMap)->find();
// 					if($class['teacherid']!=$preClass['teacherid']){//如果传来的老师id与原来的老师id不同则修改原老师的isdistribution字段为0
// 						$teacherModel=M('Teacher');
// 						if($preClass['teacherid']!=0){
// 							$preTeacher['uid']=$preClass['teacherid'];
// 							$preTeacher['isdistribution']=0;
// 							$rstOfPre=$teacherModel->save($preTeacher);
// 							if(!$rstOfPre){
// 								$classModel->rollback();
// 								$this->error('班级修改失败！');
// 							}
// 						}
// 						if($class['teacherid']!=0){
// 							$nowTeacher['uid']=$class['teacherid'];
// 							$nowTeacher['isdistribution']=1;
// 							$rstOfNow=$teacherModel->save($nowTeacher);
// 							if(!$rstOfNow){
// 								$classModel->rollback();
// 								$this->error('班级修改失败！');
// 							}
// 						}
// 					}
					if($classModel->save($class)===false){
// 						$classModel->rollback();
						$this->error('班级修改失败！');
					} else {
// 						$classModel->commit();
						$this->success('班级修改成功！',Cookie('__forward__'));
					}
				}else {
// 					$classModel->rollback();
					$this->error('班级号已存在！');
				}
			}
		}else{
			/*查询班级信息*/
			$classid=	I('id');
			$class	=	M('ClassInfo')->find($classid);
			$this->assign('_data', $class);
			
			/*查询下拉框教师信息*/
			$map['schoolid']=	session('user_auth.schoolid');
			$map['status']	=	1;//教师状态（-1：已删除，0：禁用，1：正常）
// 			$map['isdistribution']=0;//是否已分配（是否被分配成班主任，0表示没有被分配，1表示已经被分配，默认为0）	
			$teacherList	=	M('Teacher')->where($map)->select();
// 			if($class['teacherid']){//如果该班级存在教师，添加当前该班级教师
// 				$teacherList[]=M('Teacher')->where(array('uid'=>$class['teacherid'],'status'=>1))->find();
// 			}
			$this->assign('_list', $teacherList);
			$this->display();
		}
	}
	/**
	 * 修改状态
	 * @param string $method	传入的修改状态命令
	 *		graduate	毕业（班级毕业，该班的所有学生修改为毕业状态。）
	 *		deleteclass	删除班级
	 */
    public function changeStatus($method=null){
    	$id = array_unique((array)I('id',0));
    	$id = is_array($id) ? implode(',',$id) : $id;
    	if ( empty($id) ) {
    		$this->error('请选择要操作的数据!');
    	}
    	$map['id'] =   array('in',$id);
    	$classModel=M('ClassInfo');
    	$classModel->startTrans();
    	switch ( strtolower($method) ){
    		case 'graduate':
//     			$map['teacherid']=array('neq',0);//必须分配了教师才能毕业	
    			$data['undergraduate']=0;//是否毕业（1，表示未毕业，0表示已毕业）
    			$student=array(
    				'classid'=>$map['id'],
    				'status'=>1,
    				'isstudy'=>array('neq','3'),//在读状态（1表示在读，2表示毕业，3表示退学）
    			);
    			$list['isstudy']=2;
    			if(!M('Student')->where($student)->save($list)){
    				$classModel->rollback();
    				$this -> error('执行操作失败（该班级没有可以毕业的学生）！');
    			}
    			break;
    		case 'deleteclass':
    			$data['status']=-1;//班级状态（-1：已删除，0：禁用，1：正常）
    			$list['classid']=0;
    			M('Student')->where('classid='.$map['id'])->save($list);
    			break;
    		default:
    			$classModel->rollback();
    			$this->error('参数非法');
    	}
    	if($data){
			if(!$classModel->where($map)->save($data)){
				$classModel->rollback();
				$this -> error('执行操作失败！');
			}else{
				$classModel->commit();
				$this -> success('执行操作成功！',Cookie('__forward__'));
			}
		}
    }
}